Academy

Docker Networking

Latest Technologies - ডকার (Docker) - NCTB BOOK

Docker Networking হল Docker কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগের ব্যবস্থা। Docker Networking বিভিন্ন নেটওয়ার্ক ড্রাইভার ব্যবহার করে কন্টেইনারগুলোর মধ্যে সংযোগ স্থাপন করতে সহায়তা করে, যা বিভিন্ন কনফিগারেশন এবং অ্যাপ্লিকেশন আর্কিটেকচারের জন্য অত্যন্ত গুরুত্বপূর্ণ। নিচে Docker Networking এর বিভিন্ন দিক এবং এর ব্যবহারের পদ্ধতি আলোচনা করা হলো।

Docker Networking-এর মূল উপাদান

Bridge Network:

  • বর্ণনা: ডিফল্ট নেটওয়ার্ক ড্রাইভার যা নতুন কন্টেইনারগুলোর জন্য একটি স্থানীয় নেটওয়ার্ক তৈরি করে। এটি কন্টেইনারগুলোর মধ্যে একে অপরের সাথে যোগাযোগের জন্য ব্যবহৃত হয়।
  • ব্যবহার: কন্টেইনারগুলোর মধ্যে বিচ্ছিন্ন যোগাযোগের প্রয়োজন হলে ব্যবহার করা হয়।

Host Network:

  • বর্ণনা: কন্টেইনারকে হোস্টের নেটওয়ার্ক স্ট্যাক ব্যবহার করার অনুমতি দেয়। এতে কন্টেইনার এবং হোস্ট একই IP ব্যবহার করে, যা নেটওয়ার্কের পারফরম্যান্স বাড়ায়।
  • ব্যবহার: যদি আপনি কন্টেইনারের পারফরম্যান্স বাড়াতে চান এবং হোস্টের সাথে খুব ঘনিষ্ঠভাবে কাজ করতে চান।

Overlay Network:

  • বর্ণনা: মাল্টি-হোস্ট ড্রাইভার যা Docker Swarm ক্লাস্টার বা কন্টেইনার অর্কেস্ট্রেশনের জন্য ব্যবহৃত হয়। এটি বিভিন্ন হোস্টের মধ্যে কন্টেইনারগুলোর যোগাযোগের জন্য একটি ভার্চুয়াল নেটওয়ার্ক তৈরি করে।
  • ব্যবহার: যদি আপনার অ্যাপ্লিকেশনটি একাধিক হোস্টের মধ্যে বিস্তৃত হয়।

Macvlan Network:

  • বর্ণনা: এটি কন্টেইনারগুলোর জন্য একটি পৃথক MAC ঠিকানা তৈরি করে, যা তাদের হোস্টের নেটওয়ার্কের মতো আচরণ করতে সক্ষম করে।
  • ব্যবহার: যখন আপনি একটি নেটওয়ার্কে কন্টেইনারের সাথে সরাসরি সংযোগ করতে চান এবং প্রতিটি কন্টেইনারের জন্য পৃথক IP ঠিকানা চান।

Docker Networking কমান্ড

নেটওয়ার্ক তৈরি করা:

docker network create my-network

নেটওয়ার্কের তালিকা দেখা:

docker network ls

নেটওয়ার্কের তথ্য দেখা:

docker network inspect my-network

নেটওয়ার্ক মুছা:

docker network rm my-network

Docker Networking এর ব্যবহার

  • কন্টেইনার সংযোগ: বিভিন্ন কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য নেটওয়ার্ক তৈরি করা।
  • অ্যাপ্লিকেশন পারফরম্যান্স: প্রয়োজন অনুসারে নেটওয়ার্ক ড্রাইভার নির্বাচন করে অ্যাপ্লিকেশনগুলির পারফরম্যান্স বাড়ানো।
  • নিরাপত্তা: কন্টেইনারগুলোর মধ্যে যোগাযোগ নিয়ন্ত্রণ এবং নিরাপত্তা নিশ্চিত করা।

সারসংক্ষেপ

Docker Networking হল কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগের একটি গুরুত্বপূর্ণ উপাদান। বিভিন্ন ধরনের নেটওয়ার্ক ড্রাইভার যেমন Bridge, Host, Overlay এবং Macvlan ব্যবহার করে আপনি কন্টেইনারের যোগাযোগ কনফিগার করতে পারেন। Docker Networking ব্যবস্থাপনা আপনাকে কন্টেইনার ভিত্তিক অ্যাপ্লিকেশনগুলোর স্থিতিশীলতা এবং কার্যকারিতা উন্নত করতে সাহায্য করে।

Content added By

Docker Networking কী এবং এর প্রকারভেদ

Docker Networking হল Docker কনটেইনারগুলির মধ্যে এবং কনটেইনার থেকে বাহ্যিক নেটওয়ার্কের সাথে যোগাযোগ পরিচালনার জন্য ব্যবহৃত প্রযুক্তি। Docker Networking-এর মাধ্যমে কনটেইনারগুলো বিভিন্নভাবে সংযুক্ত হতে পারে, যেমন স্থানীয়, প্রাইভেট, বা পাবলিক নেটওয়ার্কে। এটি কনটেইনারের মধ্যে ডেটা আদান-প্রদানের সুবিধা দেয় এবং বিভিন্ন পরিষেবা পরিচালনা করতে সহায়ক হয়।

Docker Networking-এর প্রকারভেদ

Docker Networking-এর কয়েকটি প্রধান প্রকার রয়েছে:

১. Bridge Network

  • বর্ণনা: এটি Docker ডিফল্ট নেটওয়ার্ক ড্রাইভার। যখন একটি কনটেইনার তৈরি করা হয় এবং নির্দিষ্ট নেটওয়ার্ক উল্লেখ করা হয় না, তখন এটি একটি ব্রিজ নেটওয়ার্ক তৈরি করে।
  • ব্যবহার: কনটেইনারগুলির মধ্যে যোগাযোগের জন্য এবং কনটেইনার থেকে হোস্ট মেশিনে যোগাযোগের জন্য ব্যবহৃত হয়।
  • কমান্ড:
docker network create my-bridge-network
docker run --network my-bridge-network --name my-container my-image

২. Host Network

  • বর্ণনা: এই নেটওয়ার্কে কনটেইনারগুলি হোস্ট মেশিনের নেটওয়ার্ক স্ট্যাক ব্যবহার করে। কনটেইনারগুলি হোস্টের IP ঠিকানা শেয়ার করে এবং এটি কনটেইনারের জন্য আলাদা নেটওয়ার্ক তৈরি করে না।
  • ব্যবহার: এটি উচ্চ পারফরম্যান্স এবং কম লেটেন্সি অ্যাপ্লিকেশনের জন্য উপযুক্ত।
  • কমান্ড:
docker run --network host my-image

৩. Overlay Network

  • বর্ণনা: Overlay নেটওয়ার্কটি একাধিক Docker ডিমনের মধ্যে কনটেইনারগুলির মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। এটি Swarm Mode-এ ক্লাস্টার কনটেইনারের জন্য ব্যবহৃত হয়।
  • ব্যবহার: এটি বিভিন্ন হোস্টে অবস্থিত কনটেইনারগুলির মধ্যে নিরাপদ যোগাযোগের সুযোগ দেয়।
  • কমান্ড:
docker network create --driver overlay my-overlay-network

৪. Macvlan Network

  • বর্ণনা: Macvlan নেটওয়ার্ক কনটেইনারগুলিকে একটি পৃথক MAC ঠিকানা বরাদ্দ করে, যা তাদের নেটওয়ার্কের উপর হোস্ট মেশিনের মতো আচরণ করতে দেয়।
  • ব্যবহার: এটি হোস্টের নেটওয়ার্কের বাইরের ইন্টারফেসের মতো কাজ করে এবং বিশেষ করে পুরনো অ্যাপ্লিকেশনগুলির জন্য উপকারী।
  • কমান্ড:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my-macvlan-network

৫. None Network

  • বর্ণনা: এই নেটওয়ার্কের ক্ষেত্রে কনটেইনারটি কোনও নেটওয়ার্ক সংযোগ থাকবে না। এটি বিশেষ পরিস্থিতিতে ব্যবহৃত হয়, যেখানে কনটেইনারটির জন্য নেটওয়ার্কের প্রয়োজন নেই।
  • ব্যবহার: এটি নিরাপত্তা কারণে কিছু কনটেইনারকে বিচ্ছিন্ন রাখার জন্য ব্যবহার করা হয়।
  • কমান্ড:
docker run --network none my-image

সারসংক্ষেপ

Docker Networking বিভিন্ন প্রকারের নেটওয়ার্কিং সমাধান প্রদান করে, যা কনটেইনারগুলির মধ্যে এবং বাহ্যিক নেটওয়ার্কের সাথে যোগাযোগ সক্ষম করে। বিভিন্ন নেটওয়ার্ক যেমন Bridge, Host, Overlay, Macvlan, এবং None বিভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। Docker Networking ব্যবহারের মাধ্যমে কনটেইনারের মধ্যে ডেটা আদান-প্রদান এবং সেবা সংযোগ নিশ্চিত করা যায়, যা উন্নয়ন এবং উৎপাদন পরিবেশে গুরুত্বপূর্ণ।

Content added By

Docker-এ নেটওয়ার্কিং কন্টেইনারগুলোর মধ্যে এবং কন্টেইনার ও হোস্টের মধ্যে যোগাযোগ প্রতিষ্ঠার জন্য একটি গুরুত্বপূর্ণ উপাদান। Docker বিভিন্ন ধরনের নেটওয়ার্ক ড্রাইভার প্রদান করে, যার মধ্যে Bridge, Host, এবং Overlay নেটওয়ার্ক অন্যতম। নিচে এই তিন ধরনের নেটওয়ার্কের বর্ণনা এবং ব্যবহার নিয়ে বিস্তারিত আলোচনা করা হলো।

১. Bridge Network

বর্ণনা

  • Bridge Network হল Docker-এর ডিফল্ট নেটওয়ার্ক ড্রাইভার। এটি একটি স্থানীয় নেটওয়ার্ক তৈরি করে যেখানে কন্টেইনারগুলি একে অপরের সাথে যোগাযোগ করতে পারে।

বৈশিষ্ট্য

  • অ্যালগরিদম: Docker দ্বারা স্বয়ংক্রিয়ভাবে পরিচালিত হয়। নতুন কন্টেইনার তৈরি হলে এটি সাধারণত একটি ব্রিজ নেটওয়ার্ক তৈরি করে।
  • আইপ্যাড্রেস: কন্টেইনারগুলির জন্য আলাদা IP ঠিকানা প্রদান করে, যা তাদের মধ্যে যোগাযোগের জন্য প্রয়োজনীয়।
  • অ্যালগরিদম: কন্টেইনারগুলির মধ্যে নাম সমাধানের জন্য DNS সেবা প্রদান করে।

ব্যবহার

  • বিচ্ছিন্ন যোগাযোগ: কন্টেইনারগুলির মধ্যে নিরাপদ এবং বিচ্ছিন্ন যোগাযোগের জন্য ব্যবহৃত হয়।

উদাহরণ

docker run -d --name my-container --network bridge my-app-image

২. Host Network

বর্ণনা

  • Host Network হল একটি নেটওয়ার্ক ড্রাইভার যা কন্টেইনারকে হোস্টের নেটওয়ার্ক স্ট্যাক ব্যবহার করতে দেয়। এতে কন্টেইনার এবং হোস্ট একই IP ঠিকানা ব্যবহার করে।

বৈশিষ্ট্য

  • পারফরম্যান্স: নেটওয়ার্ক ওভারহেড কমাতে সক্ষম, কারণ কন্টেইনার হোস্টের নেটওয়ার্কের সাথে সরাসরি যুক্ত থাকে।
  • আইপ্যাড্রেস: কন্টেইনার এবং হোস্টের মধ্যে যোগাযোগ করার জন্য একই IP ঠিকানা ব্যবহার করা হয়।

ব্যবহার

  • পারফরম্যান্সের প্রয়োজন: যখন কন্টেইনারের পারফরম্যান্স বাড়ানোর প্রয়োজন হয় এবং হোস্টের সাথে খুব ঘনিষ্ঠভাবে কাজ করতে চান।

উদাহরণ

docker run -d --name my-container --network host my-app-image

৩. Overlay Network

বর্ণনা

  • Overlay Network একটি মাল্টি-হোস্ট নেটওয়ার্ক ড্রাইভার যা Docker Swarm ক্লাস্টারের জন্য ব্যবহৃত হয়। এটি বিভিন্ন হোস্টের মধ্যে কন্টেইনারগুলোর যোগাযোগের জন্য একটি ভার্চুয়াল নেটওয়ার্ক তৈরি করে।

বৈশিষ্ট্য

  • মাল্টি-হোস্ট: বিভিন্ন হোস্টের মধ্যে কন্টেইনারগুলোর মধ্যে সংযোগ স্থাপন করার জন্য এটি ব্যবহৃত হয়।
  • এনক্রিপশন: Overlay Network নিরাপত্তার জন্য এনক্রিপশন সুবিধা প্রদান করতে পারে, যা ডেটার নিরাপত্তা নিশ্চিত করে।

ব্যবহার

  • ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন: যখন আপনার অ্যাপ্লিকেশনটি একাধিক হোস্টের মধ্যে বিস্তৃত হয় এবং কন্টেইনারগুলোর মধ্যে যোগাযোগ প্রয়োজন হয়।

উদাহরণ

docker network create -d overlay my-overlay-network

সারসংক্ষেপ

Docker-এ Bridge, Host, এবং Overlay নেটওয়ার্ক তিনটি প্রধান নেটওয়ার্ক ড্রাইভার। Bridge Network স্থানীয় কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়, Host Network কন্টেইনার এবং হোস্টের মধ্যে সরাসরি সংযোগ প্রতিষ্ঠা করে, এবং Overlay Network মাল্টি-হোস্ট পরিবেশে কন্টেইনারগুলোর মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়। আপনার অ্যাপ্লিকেশন এবং পরিবেশের চাহিদার উপর ভিত্তি করে সঠিক নেটওয়ার্ক ড্রাইভার নির্বাচন করা গুরুত্বপূর্ণ।

Content added By

Custom Network তৈরি এবং কনটেইনারের মধ্যে যোগাযোগ

Docker-এ একটি Custom Network তৈরি করা এবং সেই নেটওয়ার্কে কনটেইনারগুলোর মধ্যে যোগাযোগ স্থাপন করা একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি কনটেইনারগুলোর মধ্যে আইসোলেশন এবং নিরাপত্তা নিশ্চিত করে, সেইসাথে নির্দিষ্ট কনটেইনারগুলোর মধ্যে যোগাযোগ সহজতর করে।

Custom Network তৈরি করার পদক্ষেপ

১. Custom Network তৈরি করা

Docker CLI ব্যবহার করে একটি Custom Network তৈরি করতে নিচের কমান্ডটি ব্যবহার করুন:

docker network create my-custom-network

বিবরণ: এখানে my-custom-network হল আপনার নতুন নেটওয়ার্কের নাম। আপনি চাইলে কাস্টম নেটওয়ার্কের জন্য বিভিন্ন বিকল্প যেমন ড্রাইভারও নির্দিষ্ট করতে পারেন। উদাহরণস্বরূপ, একটি ব্রিজ নেটওয়ার্ক তৈরি করতে:

docker network create --driver bridge my-custom-network

২. কনটেইনার চালানো এবং Custom Network-এ সংযুক্ত করা

নতুন কনটেইনার তৈরি করতে এবং Custom Network-এ সংযুক্ত করতে docker run কমান্ড ব্যবহার করুন। উদাহরণস্বরূপ:

docker run -d --name container1 --network my-custom-network nginx
docker run -d --name container2 --network my-custom-network redis

বিবরণ: এখানে container1 নামের একটি Nginx কনটেইনার এবং container2 নামের একটি Redis কনটেইনার তৈরি করা হচ্ছে, এবং উভয় কনটেইনারই my-custom-network নেটওয়ার্কে যুক্ত হচ্ছে।

কনটেইনারের মধ্যে যোগাযোগ

১. কনটেইনারের মধ্যে যোগাযোগ স্থাপন

যেহেতু উভয় কনটেইনার একই Custom Network-এ রয়েছে, সেহেতু তারা একে অপরকে কনটেইনার নাম ব্যবহার করে সংযুক্ত করতে পারে। উদাহরণস্বরূপ, container1 (Nginx) থেকে container2 (Redis) এর সাথে যোগাযোগ করার জন্য:

exec কমান্ড ব্যবহার করে কনটেইনারে প্রবেশ করুন:

docker exec -it container1 /bin/bash

Redis এ সংযোগ স্থাপন করুন:

apt-get update && apt-get install -y redis-tools
redis-cli -h container2

বিবরণ: এখানে redis-cli ব্যবহার করে container2 কনটেইনারে Redis সার্ভারের সাথে সংযোগ স্থাপন করা হচ্ছে।

২. কনটেইনারের মধ্যে যোগাযোগ পরীক্ষা করা

কনটেইনারের মধ্যে যোগাযোগ পরীক্ষা করতে, আপনি পিং কমান্ড ব্যবহার করতে পারেন। উদাহরণস্বরূপ:

docker exec -it container1 ping container2

বিবরণ: এটি container1 থেকে container2 কনটেইনারে পিং পাঠাবে। যদি সবকিছু ঠিক থাকে, তবে আপনি একটি সফল পিং প্রতিক্রিয়া পাবেন।

সারসংক্ষেপ

Docker-এ Custom Network তৈরি করা এবং কনটেইনারগুলোর মধ্যে যোগাযোগ স্থাপন করা একটি গুরুত্বপূর্ণ প্রক্রিয়া যা কনটেইনারগুলির নিরাপত্তা এবং কার্যকারিতা নিশ্চিত করে। Custom Network তৈরি করতে docker network create কমান্ড ব্যবহার করা হয়, এবং কনটেইনার তৈরি ও চালানোর সময় --network ফ্ল্যাগ ব্যবহার করে কনটেইনারগুলিকে সেই নেটওয়ার্কে সংযুক্ত করা হয়। একই নেটওয়ার্কে থাকা কনটেইনারগুলো কনটেইনার নাম ব্যবহার করে সহজেই যোগাযোগ করতে পারে।

Content added By

Docker Compose এবং Multi-container Application

Docker Compose হল একটি টুল যা একাধিক Docker কন্টেইনারকে একসাথে পরিচালনা করার জন্য ব্যবহৃত হয়। এটি একটি YAML ফাইল (অর্থাৎ docker-compose.yml) ব্যবহার করে, যেখানে অ্যাপ্লিকেশনের সমস্ত কন্টেইনারের কনফিগারেশন, নেটওয়ার্কিং, ভলিউম, এবং পরিবেশের সেটিংস উল্লেখ করা হয়। Docker Compose ব্যবহারের মাধ্যমে ডেভেলপাররা সহজেই একাধিক কন্টেইনারের জন্য একটি কোড-বেস তৈরি করতে পারেন এবং একটি অ্যাপ্লিকেশনকে আরও সুসংগঠিতভাবে পরিচালনা করতে পারেন।

Docker Compose-এর মূল বৈশিষ্ট্য

বহু-কন্টেইনার ব্যবস্থাপনা: Docker Compose ব্যবহার করে একটি বা একাধিক কন্টেইনার সহজেই পরিচালনা করা যায়। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন, একটি ডেটাবেস, এবং একটি ক্যাশ সার্ভার সব কন্টেইনারের মধ্যে একত্রিত করা যায়।

সার্ভিস ডিফিনিশন: Compose ফাইলে প্রতিটি সার্ভিসের জন্য নির্দিষ্ট কনফিগারেশন দেওয়া হয়, যেমন ইমেজ, নেটওয়ার্ক, এবং ভলিউম।

নেটওয়ার্কিং: Docker Compose ডিফল্টভাবে সমস্ত কন্টেইনারগুলিকে একই নেটওয়ার্কে যুক্ত করে, যা তাদের মধ্যে যোগাযোগকে সহজ করে।

পরিবেশের ভেরিয়েবল: পরিবেশ ভেরিয়েবলগুলি ব্যবহারের মাধ্যমে কন্টেইনারগুলির কনফিগারেশন নির্ধারণ করা যায়।

Multi-container Application

Multi-container Applications হল সেসব অ্যাপ্লিকেশন যা একাধিক কন্টেইনারে চলমান হয়। উদাহরণস্বরূপ, একটি ওয়েব অ্যাপ্লিকেশন, একটি ডেটাবেস, এবং একটি ক্যাশ সার্ভার একই সময়ে চলতে পারে এবং তারা একে অপরের সাথে কাজ করতে পারে।

Docker Compose ব্যবহার করে Multi-container Application তৈরি করা

১. docker-compose.yml ফাইল তৈরি করা

একটি docker-compose.yml ফাইল তৈরি করুন যেখানে আপনার সমস্ত সার্ভিসের কনফিগারেশন উল্লেখ থাকবে। নিচে একটি উদাহরণ দেওয়া হলো:

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    networks:
      - my-network

  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - my-network

  cache:
    image: redis:latest
    networks:
      - my-network

networks:
  my-network:

২. Docker Compose কমান্ডগুলি ব্যবহার করা

Docker Compose অ্যাপ্লিকেশন শুরু করা:

এই কমান্ডটি সমস্ত সার্ভিস চালু করবে এবং লগ দেখতে পারবেন।

docker-compose up

ব্যাকগ্রাউন্ডে চালানো:

-d ফ্ল্যাগটি ব্যাকগ্রাউন্ডে কন্টেইনারগুলি চালাতে ব্যবহৃত হয়।

docker-compose up -d

কন্টেইনারগুলি বন্ধ করা:

এই কমান্ডটি সমস্ত কন্টেইনার বন্ধ করবে এবং পরিষ্কার করবে।

docker-compose down

কন্টেইনারের লগ দেখতে:

docker-compose logs

একটি নির্দিষ্ট সার্ভিসের লগ দেখতে:

docker-compose logs web

সারসংক্ষেপ

Docker Compose হল একটি শক্তিশালী টুল যা একাধিক কন্টেইনারকে একসাথে পরিচালনা করতে সহায়তা করে। Multi-container Applications তৈরি করতে Docker Compose ব্যবহার করে, আপনি সহজেই আপনার অ্যাপ্লিকেশন এবং তার সমস্ত নির্ভরতাগুলির কনফিগারেশন পরিচালনা করতে পারেন। Docker Compose-এ ব্যবহৃত docker-compose.yml ফাইলটি আপনার অ্যাপ্লিকেশনকে সংগঠিত এবং পরিচালনা করা সহজ করে তোলে, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টের সময় সময় সাশ্রয়ী হয়।

Content added By
Promotion